﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using YasharEl.Infrastructure.ObjectFactory;

namespace YasharEl.Infrastructure.ApplicationModel.Bootstrap.Execution
{
    /// <summary>
    /// The shutdown execution context factory is responsible to create an <see cref="IExecutionContext"/>
    /// and track the created shutdown execution context on the current <see cref="IReportingContext"/>.
    /// </summary>
    public interface IShutdownExecutionContextFactory
    {
        /// <summary>
        /// Creates a new <see cref="IExecutionContext"/> and tracks it on the current <see cref="IReportingContext"/>.
        /// </summary>
        /// <param name="describable">The describable.</param>
        /// <returns>A newly created shutdown execution context.</returns>
        IExecutionContext CreateShutdownExecutionContext(IDescribable describable, BaseDependencyContainer container);
    }
}
